home *** CD-ROM | disk | FTP | other *** search
- #define DISABLE_LOCAL_CALLTRACE 1 // Set to 1 to disable Call Traces for this file.
- #define DISABLE_LOCAL_DEBUG 0 // Set to 1 to disable all debugging for this file.
- #include "DebugUtils.h"
-
- #include <Errors.h>
- #include <Resources.h>
- #include "StringUtils.h"
- #include "Version.h"
-
-
-
-
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- static OSStatus GetVersResource(Handle *vers);
-
- #ifdef __cplusplus
- }
- #endif
-
-
-
-
-
- OSStatus GetNumVersion(NumVersion *vers)
- {
- Handle rez;
- OSStatus err;
-
-
- // Sanity check input parameters.
- if (!vers)
- return paramErr;
-
- err = GetVersResource(&rez);
- if (err != noErr)
- return err;
-
- *vers = *(NumVersion*)(*rez);
- DisposeHandle(rez);
- return noErr;
- }
-
-
-
-
-
- OSStatus GetNumVersionCString(char *vers)
- {
- OSStatus err;
-
-
- // Sanity check input parameters.
- if (!vers)
- return paramErr;
-
- err = GetNumVersionPString((StringPtr)vers);
- if (err != noErr)
- return err;
-
- ptocstr(vers,(StringPtr)vers);
- return noErr;
- }
-
-
-
-
-
- OSStatus GetNumVersionPString(StringPtr vers)
- {
- NumVersion num;
- OSStatus err;
-
-
- // Sanity check input parameters.
- if (!vers)
- return paramErr;
-
- err = GetNumVersion(&num);
- if (err != noErr)
- return err;
-
- NumVersionToPString(vers,&num);
- return noErr;
- }
-
-
-
-
-
- char *NumVersionToCString(char *vers,NumVersion *num)
- {
- OSStatus err;
-
-
- // Sanity check input parameters.
- if (!vers || !num)
- {
- if (vers != NULL)
- vers[0] = '\0';
- return vers;
- }
-
- NumVersionToPString((StringPtr)vers,num);
- ptocstr(vers,(StringPtr)vers);
- return vers;
- }
-
-
-
-
-
- StringPtr NumVersionToPString(StringPtr vers,NumVersion *num)
- {
- OSStatus err;
-
-
- // Sanity check input parameters.
- if (!vers || !num)
- {
- if (vers != NULL)
- vers[0] = '\0';
- return vers;
- }
-
- vers[0] = 0;
- if (num->majorRev & 0xF0)
- vers[++vers[0]] = '0' + ((num->majorRev & 0xF0) >> 4);
- if (num->majorRev & 0x0F)
- vers[++vers[0]] = '0' + (num->majorRev & 0x0F);
-
- vers[++vers[0]] = '.';
- vers[++vers[0]] = '0' + ((num->minorAndBugRev & 0xF0) >> 4);
- if (num->minorAndBugRev & 0x0F)
- {
- vers[++vers[0]] = '.';
- vers[++vers[0]] = '0' + (num->minorAndBugRev & 0x0F);
- }
-
- switch(num->stage)
- {
- case 0x20: // developStage
- vers[++vers[0]] = 'd';
- break;
-
- case 0x40: // alphaStage
- vers[++vers[0]] = 'a';
- break;
-
- case 0x60: // betaStage
- vers[++vers[0]] = 'b';
- break;
-
- case 0x80: // finalStage
- if (num->nonRelRev)
- vers[++vers[0]] = 'f';
- break;
- }
-
- if (num->nonRelRev & 0xF0)
- vers[++vers[0]] = '0' + ((num->nonRelRev & 0xF0) >> 4);
- if (num->nonRelRev & 0x0F)
- vers[++vers[0]] = '0' + (num->nonRelRev & 0x0F);
-
- return vers;
- }
-
-
- #if 0
- #pragma mark -
- #endif
-
-
- OSStatus GetVersResource(Handle *vers)
- {
- OSStatus err;
-
-
- // Sanity check input parameters.
- if (!vers)
- return paramErr;
-
- *vers = Get1Resource('vers',1);
- if (*vers == NULL)
- {
- err = ResError();
- if (err == noErr)
- err = resNotFound;
-
- return err;
- }
-
- DetachResource(*vers);
- HLock(*vers);
- return noErr;
- }
-